package demo2;

import java.util.Scanner;
import java.util.Stack;
/*
方法一:
因为每次消除的是相邻且相同的字符，所以我们考虑用栈：遍历字符串，每次遇到与栈顶相同的字符就栈顶元素出栈，栈为空或者当前字符与栈顶元素不等，就入栈

        step 1：引入辅助栈stk，遍历字符串，每次遇到与栈顶相同的字符就栈顶元素出栈
        step 2：栈为空或者当前字符与栈顶元素不等，就当前元素入栈
        step 3：输出结果，栈空说明最终是空串，直接输出0
        step 4：如果不是空串就再引入一个栈来逆置字符输出*/
public class Test {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        //获取输入
        String s = in.next(); //辅助栈
        Stack<Character> stk = new Stack<Character>();
        //遍历字符串，当前字符与栈顶不相等就入栈，相等则栈顶元素出栈
        for(int i=0;i<s.length();++i){
            char a= s.charAt(i);
            if(stk.isEmpty() || a!=stk.peek()){
                stk.push(a);
            }else if(a==stk.peek()){
                stk.pop();
            }
        }
        //输出处理
        //栈空说明最终是空串，输出0
        if(stk.isEmpty()){
            System.out.println("0");
        }else{
            //如果不是空串就再引入一个栈来逆置字符输出
            Stack<Character> stk2 = new Stack<Character>();
            while(!stk.isEmpty()){
                stk2.push(stk.pop());

            }
            while(!stk2.isEmpty()){
                System.out.print(stk2.pop());
            }
        }
    }
}